1. Field of the Invention
The present invention relates to the field of model driving development and more particularly to model validation in a model driven development environment.
2. Description of the Related Art
Modem software systems have become increasingly pervasive and open-ended, and are expected to deliver critical computing services in a dependable manner across multiple, heterogeneous computing environments. To better manage the complexity of developing modern software systems, software development strategies can be employed which raise the level of abstraction at which software systems are conceived, implemented and evolved. Model-driven development (MDD) represents one such software development strategy in which models are the primary artifacts of software development.
Modeling complex applications has several general benefits which can include a better understanding of the business or engineering situation at hand, the construction and design of application architectures, and the creation of visualizations of code and other forms of implementation. In this regard, the essence of modeling is abstraction and any visualization of code is indeed an abstraction in that application information can be selectively exposed while details deemed unnecessary or unwanted can be suppressed. Nevertheless, the terms “code model”, “implementation model” or “platform-specific model” (PSM) are often used to qualify such abstractions from a higher-level, platform independent model (PIM) that does not have such direct relationships to program code.
In conventional MDD, visual models can be created utilizing model constructs or model types. The visual models can be created from a methodological process that often begins with application requirements and culminates with a high-level architectural design model. Developers can create a detailed design model from which skeletal code can be generated to an integrated development environment. The integrated development environment, in turn, can be used to complete the detailed coding. Any changes to the code that affect the design model can be synchronized back into the model. Likewise, any model changes can be synchronized into the existing code.
As with all software development techniques, in MDD user-introduced mistakes arise during code development. Typical modeling tools allow a model under development to be validated against mistakes through user initiated automated validation. Yet, with the advent of the intelligent integrated development environment (IDE), end users have come to expect instant feedback as they develop code. Current IDE for generalized code development (and not MDD) offer code highlighting, where the user's source code is highlighted when they have made mistakes. Often a list of recognized problems can be presented somewhere in the IDE and can be updated as the user develops code.
To that end, the conventional IDE can provide suggested ways for the mistake to be resolved. This instant feedback ought to be extended to users engaging in MDD. Yet, presenting a dynamic view of modeling validation problems to the user is not as simple as providing feedback regarding a source file. Rather, models can be very large and running validation on the entire model each time the user makes a change could consume minutes, making the tool unusable.
Current model validation infrastructures (such as EMFT validation) do provide a mechanism for dynamic validation for MDD, often referred to as live validation. Still, writing validation rules to leverage these types of infrastructures can be very difficult as these infrastructures require the rule developer to thoroughly inspect all model changes including those do not apply to the target of the validation rule itself. Notably, a complex validation rule could involve writing a thousand lines of code. Thus, although possible, these validation infrastructures make adding dynamic validation to a modeling tool difficult and time consuming.